import { createStore, Store, useStore as useVuexStore } from 'vuex'

// createStote函数的执行能够创建一个根store
// 可以允许我们传递一个泛型，这个泛型就是我们state的类型注解
// 所以这里我们导入我们根模块的state类型（我们自定义的根模块类型）
import { IRootState, IStoreType } from './types'
// 导入login的store模块
import login from './login/login'
// 导入system的store模块
import system from './main/system'
const store = createStore<IRootState>({
  state() {
    return {
      name: '',
      age: 19
    }
  },
  mutations: {},
  getters: {},
  actions: {},
  modules: {
    login,
    system
  }
})

export function setupStore() {
  store.dispatch('login/loadLocalLogin')
}
// 封装一个能够处理store模块类型的方法
export function useStore(): Store<IStoreType> {
  return useVuexStore()
}
export default store
